home *** CD-ROM | disk | FTP | other *** search
/ Almathera Ten Pack 3: CDPD 3 / Almathera Ten on Ten - Disc 3: CDPD3.iso / fish / 001-100 / 001-025 / 002 / xrf / xrfi.c < prev    next >
C/C++ Source or Header  |  1995-03-17  |  4KB  |  166 lines

  1. /*
  2.  *                      ***************
  3.  *                      * X R F I . C *
  4.  *                      ***************
  5.  *
  6.  * Do initialization things.
  7.  * NOTE: This is once-only code. It should be run in an overlay,
  8.  *       along with FOPEN. The root need only contain XRF0 and XRFD.
  9.  *
  10.  * Version V1.4                  1-Jul-80
  11.  * Version V1.5                  3-Jul-80  Conditionaled date/time stuff.
  12.  * Version V1.6 MM         9-Jul-80  Changed date/time stuff
  13.  * Version V1.7 MM        10-Jul-80  File name changes
  14.  * Version V1.8 MM        21-Jul-80  Ctime() changed
  15.  * Version V1.9 MM        22-Jul-80  Redid initialization
  16.  * Version V1.11 RBD        26-Dec-80  Cleanup rt11 usage message
  17.  * Version V1.12 MM        22-Dec-81  Rtime isn't in vax library
  18.  * Version V1.13 MM        16-Feb-82  ctime fixup
  19.  */
  20.  
  21. #include <stdio.h>
  22. #include "xrf.h"
  23.  
  24. extern long time_of_day;
  25.  
  26.  
  27.  
  28.  
  29.  
  30.  
  31.  
  32.  
  33.  
  34.  
  35.  
  36.  
  37.  
  38.  
  39.  
  40.  
  41.  
  42.  
  43.  
  44.  
  45. /*
  46.  * Set up file names, open them, and initialize the page header strings
  47.  */
  48.  
  49.  
  50. initoutfile()
  51.    {
  52.  
  53.    if (debug) {printf("xrf: beginning init out file name\n");}
  54.    if (lst_arg != NULL)
  55.       {
  56.       name(lst_name, lst_arg, "x", 0);
  57.       }
  58.    else
  59.       {
  60.       name(lst_name, src_arg, "x", 1);
  61.       }
  62.    if((lst = fopen(lst_name, "w")) == NULL)  {
  63.       fprintf(stderr,"Cannot open listing file %s\n", lst_name);
  64.       exit(-1);
  65.    }
  66.    if (debug) {printf("xrf: list file %s openned\n",lst_name);}
  67.    }
  68.  
  69. initinfile()
  70. {
  71.    char    *timetemp;
  72. #ifndef AMIGA
  73.    char    *ctime();
  74. #endif
  75.    FILE *fopen();
  76.  
  77.    if (debug) {printf("xrf: beginning init source file\n");}
  78.    name(src_name, src_arg, "c", 0);
  79.    if((src = fopen(src_name, "r")) == NULL) {
  80.       fprintf(stderr,"Cannot open source file %s\n", src_name);
  81.       exit(-1);
  82.    } else {
  83. #ifdef AMIGA
  84.     sprintf(pghead,"\fCross Reference of: %s \tPage ",
  85.         src_name);
  86. #else
  87.        if (time_of_day == 0) {
  88.            time(&time_of_day);
  89.        }
  90.        timetemp = ctime(&time_of_day);
  91.        timetemp[24] = '\0';
  92.     sprintf(pghead,"\fCross Reference of: %s \t %s \tPage ",
  93.         src_name,timetemp);
  94. #endif
  95.     if (debug) {printf("xrf: source file %s openned\n",src_name);}
  96.    }
  97. }
  98.  
  99. /*
  100.  * Make a file name.
  101.  * The mode argument is either 0 which means use type as default extension,
  102.  * or 1, which means force the extension to be type. Argument file is the
  103.  * 'raw' file name, sysnam is the final filename string. All arg's except
  104.  * mode are pointers, as usual.
  105.  *
  106.  */
  107.  
  108. name(sysnam, file, type, mode)
  109. char *sysnam, *file, *type;
  110.  
  111. int mode;
  112.  
  113.    {
  114.    register char *p1, *p2;                      /* Fast pointers */
  115.    register int c;                              /* Fast char. buffer */
  116.  
  117.    if (debug) {printf("xrf: begin name build\n");}
  118.    p1 = sysnam;                                 /* p1 --> output string */
  119.    p2 = file;                                   /* p2 --> input string */
  120.    while((c = *p2++) && c != '.')               /* Copy up to '.' */
  121.       *p1++ = c;
  122.    if( mode == 0 )                              /* Default extension */
  123.       {
  124.       if( c == '.' )                            /* Extension explicitly given */
  125.          {
  126.            do                                   /* Copy '.' + any ext. */
  127.               {
  128.               *p1++ = c;
  129.               } while( c = *p2++ );
  130.          }
  131.       else                                      /* No ext. given, default */
  132.          {
  133.          *p1++ = '.';
  134.          p2 = type;
  135.          while( c = *p2++ )
  136.             *p1++ = c;
  137.          }
  138.       }
  139.    else                                 /* Force extension */
  140.       {
  141.       *p1++ = '.';
  142.       p2 = type;
  143.       while( c = *p2++ )
  144.          *p1++ = c;
  145.       }
  146.    *p1 = '\0';                          /* Terminate with eos */
  147.    if (debug) {printf("xrf: name %s built\n",sysnam);}
  148.    }
  149. /*
  150.  *****************************************************************************
  151.  *
  152.  * Give user help on program useage.
  153.  */
  154.  
  155. useage()
  156.    {
  157.    fprintf(stderr, "Usage: xrf [-dn] [-o outfile] infiles\n\n");
  158.    fprintf(stderr, "       -d  Enable debug printouts\n");
  159.    fprintf(stderr, "       -n  Narrow (80 column) output\n");
  160.    fprintf(stderr, "       -o  Output to \"outfile\"\n\n");
  161.    fprintf(stderr, "Input files may have wild-card names\n");
  162.    fprintf(stderr, "Default input filetype is \".c\"\n");
  163.    fprintf(stderr, "Default output filename is \"<first_input_file>.x\"\n");
  164.    exit(-1);
  165.    }
  166.